package com.ruoyi.system.domain.bm;

import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 支付记录实体类
 */
@Data
@TableName("bm_payment")
public class BMPayment extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 对象ID（如教练、球员等）
     */
    private Long objectId;

    /**
     * 对象类型
     */
    private Integer objectType;

    /**
     * 支付状态：0未支付，1已支付，2超时未支付，3已退款
     */
    private Integer paymentStatus;

    /**
     * 支付方式：0微信，1支付宝，2银联，3线下支付，4其他
     */
    private Integer paymentMethod;

    /**
     * 第三方交易流水号
     */
    private String transactionNo;

    /**
     * 用户完成支付的时间
     */
    private LocalDateTime paymentTime;

    /**
     * 记录退款时间，如果发生退款
     */
    private LocalDateTime refundTime;

    /**
     * 退款交易单号，微信、支付宝的单号
     */
    private String refundTradeId;

    /**
     * 对外商户订单号，防止订单号重复
     */
    private String outOrderSn;

    /**
     * 创建人ID
     */
    private Long createUserId;

    /**
     * 创建人姓名
     */
    private String createUserName;

    /**
     * 修改人ID
     */
    private Long updateUserId;

    /**
     * 修改人姓名
     */
    private String updateUserName;

    /**
     * 是否已删除 0:未删除;1:已删除
     */
    private Long isDeleted;

    /**
     * 消息体
     */
    private String body;

    /**
     * 支付金额
     */
    private BigDecimal amount;

    /**
     * 退款金额
     */
    private BigDecimal refundAmount;

    /**
     * 用户openid
     */
    private String openId;

    /**
     * 小程序id
     */
    private Integer indexId;
}
